const MyComponent = (): JSX.Element => {
return <div>Hello</div>;
};
React.createElement()
의 반환 타입과 동일React.ReactElement<any, any>
로 정의됨null
이나 string
같은 JSX 이외의 타입은 허용되지 않음cosnt MyComponent = (): React.ReactElement => {
return <h1>Title</h1>;
};
JSX.Element
와 사실상 같은 의미지만 명확하게 React
네임스페이스를 사용할 수 있음const MyComponent = (): React.ReactNode => {
if (Math.random() > 0.5) return <div>Random</div>
return 'Hello world';
};
string
, number
, null
, undefined
, boolean
, JSX, Fragment
, 배열 등 렌더링 가능한 모든 값 포함const MyComponent: React.FC = () => {
return <div>With children prop</div>;
};
children
prop이 자동 포함됨type Props = { name: string };
const Greet: React.FC<Props> = ({ name, children }) => {
return (
<div>
Hello, {name}
{children}
</div>
);
};
children
자동 포함이 명시적이지 않음ReactElement | null
로 제한됨반환 타입 | 포함 범위 | 특징 | 사용 예시 |
---|---|---|---|
JSX.Element | JSX 전용 | 가장 기본적인 JSX 타입 | 대부분의 컴포넌트 |
React.ReactElement | JSX | JSX.Element 와 유사, 네임스페이스 명확 | 라이브러리용 컴포넌트 |
ReactNode | JSX + string , null , number 등 포함 | 가장 넓은 표현 범위 | 조건부 렌더링, 동적 출력 |
Reaact.FC | 컴포넌트 전체 | children 자동 포함 | 명확한 선언현 컴포넌트 |